AUTOMATION NOTE — 051

DifyのAIエージェントでGoogle Workspace業務を自動化する:情シスがAPI連携を構築するガイド

DifyはLLMアプリケーション開発プラットフォームであり、そのAIエージェント機能とGoogle Workspace APIを連携させることで、情シス業務の自動化が可能になります。本記事では、Difyを活用してGmailやGoogle CalendarといったGoogle Workspaceのサービスを自動化する具体的なステップと、GWS管理者視点のセキュリティ設計ポイントを解説します。

この記事を読んだほうが良い人

  • Google Workspaceを管理・運用している情シス担当者
  • AIエージェントによる業務自動化に興味があるが、具体的に何ができるか知りたい方
  • DifyとGoogle WorkspaceのAPI連携の構築手順を知りたい方
  • OAuth認証のセキュリティ設計と管理コンソールでの制御方法に関心がある方
  • Google Apps Script (GAS) 以外の自動化ツールを検討している方

DifyのAIエージェント機能とGoogle Workspace連携の可能性

Difyは、AIアプリケーションの構築・運用を容易にするプラットフォームです。Difyの主要な機能の一つに「Tools(ツール)」があります。これは、AIエージェントが外部サービスと連携するために使用する機能です。AIエージェントは、与えられたタスクを達成するために、適切なタイミングでToolsを呼び出し、情報を取得したり、アクションを実行したりします。

情シス業務において、Google Workspace (GWS) は日々多くのタスクが発生するプラットフォームです。例えば、特定のメール受信時の自動応答、カレンダーイベントの作成・調整、Driveのファイル権限チェックなど、定型的ながらも手作業では手間がかかる業務が少なくありません。これらの業務は、GWSの各種API(Gmail API, Calendar API, Drive APIなど)を通じてプログラム的に操作できます。

DifyのAIエージェントにGWS APIをToolsとして組み込むことで、AIが文脈を理解し、必要なGWS操作を自律的に判断・実行する自動化システムを構築できます。GASによるスクリプト実行との最大の違いは、AIが入力の文脈を読み取って処理を変えられる点にあります。固定フローではなく、状況に応じた判断が必要な業務に向いています。

DifyとGoogle Workspaceを連携する基本的な仕組み

DifyのAIエージェントがGoogle Workspace APIを呼び出すには、OAuth 2.0による認証が必要です。この認証フローは、DifyとGoogle Cloud Platform (GCP) 間で確立されます。

連携フローは以下の順序で進みます。

  1. AIエージェントへの指示: 情シス担当者がDifyのAIエージェントに自動化したいタスクを指示します。
  2. API呼び出しリクエスト: DifyのAIエージェントは、指示内容に基づき、登録されたTools(GWS API)を呼び出す必要があると判断します。
  3. OAuth認証フロー: 初回接続時、DifyはGoogle Cloud Platformを通じてユーザーにOAuth認証を要求します。ユーザーはDifyがアクセスする権限(スコープ)を確認し、許可します。
  4. アクセストークン発行: 認証が成功すると、GCPはDifyにアクセストークンを発行します。Difyはこのトークンを使ってGWS APIを呼び出します。
  5. APIレスポンス: DifyはアクセストークンをGWS APIのリクエストに付与し、APIは処理結果をDifyに返します。
  6. 自動化結果: DifyのAIエージェントはAPIレスポンスを解釈し、最終的な結果をユーザーに提示します。

ユーザーOAuthとサービスアカウント:どちらを選ぶか

上記のフローは「特定のユーザーの代わりに操作する」ユーザーOAuthです。情シス用途では、もう一つの選択肢としてサービスアカウントがあります。

ユーザーOAuthは操作対象のデータ所有者(ユーザー)が自分で認証するため、個人の受信トレイや個人カレンダーへのアクセスに適しています。一方、部門共有カレンダーの管理や組織全体のドライブ操作など、特定ユーザーに依存させたくない処理は、ドメイン全体への委任(Domain-Wide Delegation)を設定したサービスアカウントが適しています。

サービスアカウントを使う場合は、GCPでサービスアカウントを作成し、GWSの管理コンソールでドメイン全体の委任を承認する手順が必要です。ユーザーOAuthに比べて設定の手間は増えますが、特定の人間アカウントに依存しない安定した自動化が実現できます。今回の構築例はユーザーOAuthで進めますが、組織全体を対象にした自動化ではサービスアカウントの採用を検討してください。

実践:DifyでGmail処理自動化エージェントを構築する

ここでは、Gmailの未読メールを読み込み、特定の条件に合致するメールに対して自動でカレンダーイベントを作成するAIエージェントを構築する例を解説します。

ステップ1: Google Cloud プロジェクトのセットアップとAPI有効化

  1. Google Cloud プロジェクトの作成: Google Cloud Consoleにアクセスし、新しいプロジェクトを作成します。
  2. 必要なAPIの有効化:
    • Gmail API を検索し、有効化します。
    • Google Calendar API を検索し、有効化します。
  3. OAuth同意画面の設定:
    • 「APIとサービス」>「OAuth同意画面」に移動し、「外部」または「内部」(組織のユーザーのみが使用する場合)を選択して設定を進めます。
    • アプリケーション名、サポートメールなどを入力します。
    • スコープの追加 DifyがアクセスするGmailおよびCalendarの権限を指定します。今回の例では以下のスコープを追加します。
      • https://www.googleapis.com/auth/gmail.readonly(Gmailの読み取り権限)
      • https://www.googleapis.com/auth/calendar.events(Googleカレンダーのイベント作成・編集・削除権限)
    • テストユーザーを追加し、設定を完了します。
  4. 認証情報の作成:
    • 「APIとサービス」>「認証情報」に移動し、「認証情報を作成」>「OAuthクライアントID」を選択します。
    • アプリケーションの種類は「ウェブアプリケーション」を選択します。
    • 名前を入力し、「承認済みのリダイレクトURI」にDifyのTool設定画面で提供されるリダイレクトURI(通常は https://cloud.dify.ai/oauth-callback のような形式)を追加します。
    • 作成後、「クライアントID」と「クライアントシークレット」が発行されます。これらはDifyにカスタムツールを定義する際に必要になります。

ステップ2: Difyにカスタムツールを定義する

DifyでGoogle Workspace APIを呼び出すには、カスタムツールとしてAPIの仕様を定義します。OpenAPI Specification (YAML/JSON) 形式でAPIのエンドポイント、パラメータ、レスポンスなどを記述します。

  1. DifyでToolを作成: Difyのワークスペースで「Tools」セクションに移動し、「Create Tool」を選択します。
  2. APIスキーマの定義: 例えば、Gmailの未読メールを取得するToolを定義する場合、以下のようなOpenAPI Specificationの一部を記述します。
openapi: 3.0.0
info:
  title: Gmail Reader Tool
  version: 1.0.0
paths:
  /gmail/v1/users/me/messages:
    get:
      summary: 未読の受信トレイメールを取得する
      operationId: getUnreadMessages
      parameters:
        - name: q
          in: query
          description: 検索クエリ(例: is:unread in:inbox)
          required: true
          schema:
            type: string
      responses:
        '200':
          description: 未読メールのリスト
          content:
            application/json:
              schema:
                type: object
                properties:
                  messages:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        threadId:
                          type: string
        '401':
          description: Unauthorized
servers:
  - url: https://gmail.googleapis.com
security:
  - OAuth2: []
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.google.com/o/oauth2/auth
          tokenUrl: https://oauth2.googleapis.com/token
          scopes:
            https://www.googleapis.com/auth/gmail.readonly: Read Gmail messages

このスキーマには、Gmail APIのベースURL(servers)、認証方法(securitySchemes のOAuth2部分にGoogleのOAuthエンドポイントとスコープ)が含まれます。Difyはこれに基づいて認証フローを開始し、APIを呼び出します。同様に、カレンダーイベントを作成するToolについても定義を追加します。

ステップ3: AIエージェントの設計とテスト

Toolを定義したら、DifyのAIエージェントにそのToolを使わせるための指示(プロンプト)を設計します。

  1. アプリケーションの作成: Difyで新しい「Agent」タイプのアプリケーションを作成します。
  2. プロンプトエンジニアリング: エージェントの「Prompt」セクションで、具体的なタスク指示と、いつどのToolを使うべきかを記述します。
あなたは情シス担当者を支援するAIアシスタントです。
以下のタスクを実行してください:
1. 受信トレイの未読メールをチェックします。
2. 件名に「会議依頼」または「緊急対応」と含まれるメールを特定します。
3. 特定したメールの本文から、会議の目的、参加者、日時(候補)を抽出します。
4. 抽出した情報に基づき、Googleカレンダーに新しいイベントを作成します。
5. イベント作成後、完了したことをユーザーに報告します。

利用可能なツール:
- getUnreadMessages: 未読の受信トレイメールを取得します。
- createCalendarEvent: Googleカレンダーにイベントを作成します。(例: タイトル、開始時刻、終了時刻、参加者メールアドレス)
  1. Toolの有効化: 作成したカスタムツールをエージェント設定で有効化します。
  2. テストと調整: エージェントをテスト実行し、期待通りに動作するか確認します。必要に応じてプロンプトやToolの定義を調整します。

これにより、AIエージェントは「未読メールを確認し、特定のキーワードが含まれていればカレンダーイベントを作成する」という一連の業務を自律的に実行できます。

セキュリティ設計の重要性:OAuthスコープ・最小権限・管理コンソール制御

DifyとGoogle Workspace APIを連携させる上で、セキュリティ設計は非常に重要です。特にOAuthスコープの選択、認証情報の管理、そしてGWS管理者による組織レベルの制御には細心の注意が必要です。

OAuthスコープの選択と意味

OAuthスコープは、DifyがGoogle Workspaceのどのデータに、どの程度の権限でアクセスできるかを定義します。

  • 最小権限の原則: 必要な最小限のスコープのみを付与することが鉄則です。例えば、Gmailのメールを読み取るだけであれば https://www.googleapis.com/auth/gmail.readonly で十分であり、https://www.googleapis.com/auth/gmail.modifyhttps://www.googleapis.com/auth/gmail.compose のような書き込み・送信権限は不要です。
  • 影響範囲の理解: 各スコープがどのような操作を許可するのか、Google Developersの公式ドキュメントで正確に理解することが不可欠です。広範なスコープを安易に許可すると、セキュリティリスクが増大します。

認証情報の安全な管理

Google Cloudから発行されるクライアントIDとクライアントシークレットは、DifyがGoogle Workspaceにアクセスするための鍵です。

  • 秘匿性の確保: これらの情報はDifyのTool設定画面で入力しますが、外部に漏洩しないよう厳重に管理する必要があります。
  • リダイレクトURIの正確性: OAuthクライアントID作成時に指定する「承認済みのリダイレクトURI」は、Difyの公式ドメインと完全に一致させる必要があります。これにより、認証コードが意図しないサイトに送られるのを防ぎます。
  • 定期的な見直し: 連携しているアプリケーションの権限は、定期的に見直し、不要になったスコープは削除するなどの運用が必要です。

GWS管理コンソールでのAPIアクセス制御

個人ユーザーがOAuth同意画面で許可する操作とは別に、GWS管理者はGoogle管理コンソールから組織全体のサードパーティアプリのAPIアクセスを制御できます。情シス担当者がDifyを組織導入する場合、この管理コンソール側の設定も欠かせません。

管理コンソールの「セキュリティ」>「APIの制御」>「アプリのアクセス制御」では、以下の操作が可能です。

  • 信頼できるアプリの明示的な許可: 組織が承認したアプリだけにGWSデータへのアクセスを許可するホワイトリスト運用が可能です。
  • 未確認アプリのブロック: Googleによる審査が完了していないアプリを組織全体でブロックできます。自社で構築したDifyのカスタムOAuthクライアントは「未確認」扱いになるため、管理者が明示的に許可する操作が必要です。
  • アクセス権限の監査: どのアプリがどのスコープでアクセスしているかをレポートで確認できます。

Difyを社内に展開する場合は、まず管理コンソールでアプリを許可リストに追加し、その後ユーザーに展開する順序が安全です。この手順を踏まないと、ユーザーが認証しようとしてもGWS側でブロックされ、連携が動作しません。

また、管理コンソールの監査ログ(「レポート」>「監査と調査」)では、OAuth認証イベントを追跡できます。どのユーザーがDifyにアクセス許可を与えたか、いつ認証が行われたかを確認できるため、異常なアクセスの早期検知にも活用できます。

まとめ:DifyとGoogle Workspace連携を始める前に確認すること

本記事では、DifyのAIエージェント機能とGoogle Workspace APIを連携させ、情シス業務を自動化する具体的な手順と設計上の注意点を解説しました。

構築を始める前に確認しておきたいポイントをまとめると、次の通りです。

  • ユーザーOAuthとサービスアカウントのどちらが自組織の用途に合っているか
  • 付与するOAuthスコープが最小権限の原則を満たしているか
  • GWS管理コンソールでDifyのOAuthクライアントが許可済みになっているか
  • 管理コンソールの監査ログでOAuth認証イベントを追跡できる体制が整っているか

Difyによる自動化は、GASの「スクリプトを書いて固定フローを動かす」アプローチとは異なり、AIが文脈を読んで処理を判断できる点が強みです。定型的な手順自動化にはGASが依然として有力ですが、メールの内容に応じた分岐処理や、複数のGWSサービスをまたぐ柔軟な操作が必要な場面では、DifyのAIエージェントが選択肢になります。

まずはGCPでOAuthクライアントを作成し、GWS管理コンソールでアプリを許可する。この2ステップから着手すると、組織として安全に連携の検証を始められます。

コーポレートITのご相談はお気軽に

この記事で書いたような業務改善・自動化の設計から実装まで、DRASENASではコーポレートITの現場に寄り添った支援を行っています。 「まず相談だけ」でも大歓迎です。DRASENAS 公式サイトからお気軽にどうぞ。

CONTACT

御社の IT 部門、ここにあります。

「ITのことはあまりわからない」── そのような状態からで、まったく問題ございません。まずはお気軽にご相談ください。

一社ずつ、一から。